<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <pre>
        <h4>1.JS语言特点</h4>
            1.1单线程
            1.2解释性语言(不需要编译)跨平台

            (一) 单线程
                单线程在执行程序时，所走的程序路径按照顺序排列下来，前面的处理好后面的才会执行。
            (二) 解释性语言与编译性语言的区别
                编译性语言：程序在执行之前需要一个专门的编译过程，把程序编译成为机器语言的文件，运行时不需要重新翻译，直接使用编译的结果就行了。程序执行效率高，依赖编译器，跨平台性差些。如 C、C++ 等
                解释性语言：解释型语言的程序不需要在运行前编译，在运行程序的时候才翻译，专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次，效率比较低。如 JavaScript php python 等
                java有点特殊: xxx.java文件先通过指令 javac -->编译生成.class 文件 ---> 再通过jvm 虚拟机--解释执行
        <h4>2.JS执行队列</h4>
            虽然JS是单线程但是可以看到设置两个动画时会同步执行，这里涉及到JS执行队列。
            轮转时间片： 时间片轮转调度是一种最古老，最简单，最公平且使用最广的算法，又称RR调度。每个进程被分配一个时间段，称作它的时间片，即该进程允许运行的时间。
            假设要执行两个任务
            任务 A 和任务 B。
            js引擎会把任务 A 和任务 B 切成以毫秒或者微秒为单位的片段。
            把这些片段按照随机的方式进行排列（这个也叫争抢时间片）。
            在把这些排列好的片段一个一个往JS引擎里面去送。
            在JS引擎以一个一个片段为基准单位去执行这个片段，把任务 A 和任务 B 按照片段是执行完。
        
        <h4></h4>

    </pre>
</body>
</html>